{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**<div style=\"text-align: center\"><font color='#dc2624' face='微软雅黑' size = \"6\">ABtest</font></div>**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"all\" # 代码块显示所有执行结果"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**<div style=\"text-align: left\"><font color='black' face='微软雅黑' size = \"6\">引言</font><a name='top'></a></div>**\n",
    "\n",
    "* 正态性检验变量'sum_gamerounds'在'version'各个分组中是否符合正态分布, 整体是否符合正态分布。\n",
    "* 曼-惠特尼U检验变量'sum_gamerounds'在'version'各个分组之间是否存在统计学差异。\n",
    "* 卡方$\\chi^2$检验变量'retention_1'和变量'retention_7'与'version'分组是否存在关联。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc": true
   },
   "source": [
    "<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
    "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#需要的包\" data-toc-modified-id=\"需要的包-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>需要的包</a></span></li><li><span><a href=\"#数据清洗\" data-toc-modified-id=\"数据清洗-2\"><span class=\"toc-item-num\">2&nbsp;&nbsp;</span>数据清洗</a></span></li><li><span><a href=\"#EDA\" data-toc-modified-id=\"EDA-3\"><span class=\"toc-item-num\">3&nbsp;&nbsp;</span>EDA</a></span></li><li><span><a href=\"#正态性检验\" data-toc-modified-id=\"正态性检验-4\"><span class=\"toc-item-num\">4&nbsp;&nbsp;</span>正态性检验</a></span></li><li><span><a href=\"#曼-惠特尼U检验\" data-toc-modified-id=\"曼-惠特尼U检验-5\"><span class=\"toc-item-num\">5&nbsp;&nbsp;</span>曼-惠特尼U检验</a></span></li><li><span><a href=\"#卡方$\\chi^2$检验\" data-toc-modified-id=\"卡方$\\chi^2$检验-6\"><span class=\"toc-item-num\">6&nbsp;&nbsp;</span>卡方$\\chi^2$检验</a></span></li></ul></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 需要的包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "            <div id=\"x61Jd6\"></div>\n",
       "            <script type=\"text/javascript\" data-lets-plot-script=\"library\">\n",
       "                if(!window.letsPlotCallQueue) {\n",
       "                    window.letsPlotCallQueue = [];\n",
       "                }; \n",
       "                window.letsPlotCall = function(f) {\n",
       "                    window.letsPlotCallQueue.push(f);\n",
       "                };\n",
       "                (function() {\n",
       "                    var script = document.createElement(\"script\");\n",
       "                    script.type = \"text/javascript\";\n",
       "                    script.src = \"https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v2.2.0/js-package/distr/lets-plot.min.js\";\n",
       "                    script.onload = function() {\n",
       "                        window.letsPlotCall = function(f) {f();};\n",
       "                        window.letsPlotCallQueue.forEach(function(f) {f();});\n",
       "                        window.letsPlotCallQueue = [];\n",
       "                        \n",
       "                    };\n",
       "                    script.onerror = function(event) {\n",
       "                        window.letsPlotCall = function(f) {};    // noop\n",
       "                        window.letsPlotCallQueue = [];\n",
       "                        var div = document.createElement(\"div\");\n",
       "                        div.style.color = 'darkred';\n",
       "                        div.textContent = 'Error loading Lets-Plot JS';\n",
       "                        document.getElementById(\"x61Jd6\").appendChild(div);\n",
       "                    };\n",
       "                    var e = document.getElementById(\"x61Jd6\");\n",
       "                    e.appendChild(script);\n",
       "                })()\n",
       "            </script>\n",
       "            "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 数据处理\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "# 可视化\n",
    "from lets_plot import LetsPlot, ggplot, aes, geom_bar, geom_boxplot, ggsize, coord_flip, scale_y_log10, facet_wrap\n",
    "LetsPlot.setup_html() # 默认开启JS交互模式\n",
    "# LetsPlot.setup_html(no_js=True) # 关闭JS交互模式\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.cm as cm\n",
    "from palettable.colorbrewer.colorbrewer import get_map\n",
    "\n",
    "from statsmodels.api import qqplot\n",
    "from scipy import stats"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据清洗\n",
    "数据来源: https://www.kaggle.com/yufengsui/mobile-games-ab-testing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(90189, 5)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "userid             int64\n",
       "version           object\n",
       "sum_gamerounds     int64\n",
       "retention_1         bool\n",
       "retention_7         bool\n",
       "dtype: object"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>userid</th>\n",
       "      <th>version</th>\n",
       "      <th>sum_gamerounds</th>\n",
       "      <th>retention_1</th>\n",
       "      <th>retention_7</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>116</td>\n",
       "      <td>gate_30</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>337</td>\n",
       "      <td>gate_30</td>\n",
       "      <td>38</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>377</td>\n",
       "      <td>gate_40</td>\n",
       "      <td>165</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>483</td>\n",
       "      <td>gate_40</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>488</td>\n",
       "      <td>gate_40</td>\n",
       "      <td>179</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   userid  version  sum_gamerounds  retention_1  retention_7\n",
       "0     116  gate_30               3        False        False\n",
       "1     337  gate_30              38         True        False\n",
       "2     377  gate_40             165         True        False\n",
       "3     483  gate_40               1        False        False\n",
       "4     488  gate_40             179         True         True"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1 = pd.read_csv('./cookie_cats.csv')\n",
    "df1.shape # 共9W多行\n",
    "df1.dtypes\n",
    "df1.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**字段解释:**  \n",
    "* **userid**, 玩家id编号。\n",
    "* **version**, 玩家分组，'gate_30'为控制组，'gate_40'为测试组。\n",
    "* **sum_gamerounds**, 玩家在安装游戏第一周内，玩游戏的回合数。\n",
    "* **retention_1**, 玩家在安装游戏第1天后，还会继续玩吗？\n",
    "* **retention_7**, 玩家在安装游戏第7天后，还会继续玩吗？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "userid            False\n",
       "version           False\n",
       "sum_gamerounds    False\n",
       "retention_1       False\n",
       "retention_7       False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 检查缺失值\n",
    "df1.isna().any(axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>version</th>\n",
       "      <th>freq</th>\n",
       "      <th>perct</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>gate_40</td>\n",
       "      <td>45489</td>\n",
       "      <td>50.437415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>gate_30</td>\n",
       "      <td>44700</td>\n",
       "      <td>49.562585</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   version   freq      perct\n",
       "0  gate_40  45489  50.437415\n",
       "1  gate_30  44700  49.562585"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 离散变量频率和占比\n",
    "(df1['version'].value_counts()\n",
    " .reset_index()\n",
    " .set_axis(['version', 'freq'], axis=1)\n",
    " .eval(\"perct = freq/freq.sum()*100\", engine='python')\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>version</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>gate_30</th>\n",
       "      <td>44700.0</td>\n",
       "      <td>52.456264</td>\n",
       "      <td>256.716423</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>17.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>49854.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gate_40</th>\n",
       "      <td>45489.0</td>\n",
       "      <td>51.298776</td>\n",
       "      <td>103.294416</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>52.0</td>\n",
       "      <td>2640.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           count       mean         std  min  25%   50%   75%      max\n",
       "version                                                               \n",
       "gate_30  44700.0  52.456264  256.716423  0.0  5.0  17.0  50.0  49854.0\n",
       "gate_40  45489.0  51.298776  103.294416  0.0  5.0  16.0  52.0   2640.0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.groupby('version')['sum_gamerounds'].describe() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1['userid'].duplicated().any() # 用户id是否存在重复值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# EDA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "   <div id=\"EraGXw\"></div>\n",
       "   <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
       "       (function() {\n",
       "           var plotSpec={\n",
       "\"data\":{\n",
       "},\n",
       "\"mapping\":{\n",
       "\"x\":\"version\",\n",
       "\"y\":\"sum_gamerounds\",\n",
       "\"fill\":\"version\"\n",
       "},\n",
       "\"data_meta\":{\n",
       "},\n",
       "\"ggsize\":{\n",
       "\"width\":600,\n",
       "\"height\":400\n",
       "},\n",
       "\"kind\":\"plot\",\n",
       "\"scales\":[{\n",
       "\"aesthetic\":\"y\",\n",
       "\"trans\":\"log10\"\n",
       "}],\n",
       "\"layers\":[{\n",
       "\"geom\":\"boxplot\",\n",
       "\"mapping\":{\n",
       "},\n",
       "\"data_meta\":{\n",
       "},\n",
       "\"outlier_color\":\"magenta\",\n",
       "\"data\":{\n",
       "\"..middle..\":[NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.999999999999996,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.999999999999996],\n",
       "\"..lower..\":[NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,6.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,6.0],\n",
       "\"..upper..\":[NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,52.999999999999986,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,55.000000000000014],\n",
       "\"..ymin..\":[NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,1.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,1.0],\n",
       "\"..ymax..\":[NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,1374.0000000000014,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,1461.9999999999995],\n",
       "\"version\":[\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_30\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\",\"gate_40\"],\n",
       "\"sum_gamerounds\":[1905.999999999999,1425.0000000000002,2960.999999999999,1705.0,1413.0000000000007,1491.0000000000007,1522.0000000000002,1714.0000000000002,1469.0000000000007,1527.999999999999,2437.999999999998,2251.0,1457.0,1543.9999999999993,49853.999999999956,1489.9999999999998,2156.0000000000005,NaN,2014.9999999999993,1573.0000000000007,1696.9999999999993,1643.0000000000011,1815.9999999999989,1687.000000000001,1559.0000000000005,2640.0000000000005,1643.0000000000011,2124.0000000000014,1557.9999999999998,2293.9999999999986,1529.0000000000002,1666.9999999999989,2062.9999999999995,NaN]\n",
       "}\n",
       "}]\n",
       "};\n",
       "           var plotContainer = document.getElementById(\"EraGXw\");\n",
       "           window.letsPlotCall(function() {{\n",
       "               LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
       "           }});\n",
       "       })();    \n",
       "   </script>"
      ],
      "text/plain": [
       "<lets_plot.plot.core.PlotSpec at 0x193c40a6dc8>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ggplot(df1, aes(x='version', y='sum_gamerounds', fill='version')) \\\n",
    "+ geom_boxplot(outlier_color='magenta') \\\n",
    "+ scale_y_log10() \\\n",
    "+ ggsize(600, 400)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "gate_30和gate_40两种用户在第一周内，玩游戏的次数分布没有多大区别，绝大部分都在100次以内。玩上千次的可能是公司内部的测试人员或者人工智能程序。将这种离谱的数据给过滤掉:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "99.97117165064475"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = df1.query(\"sum_gamerounds < 1500\")\n",
    "\n",
    "df2.shape[0]/df1.shape[0]*100 # 离谱数据不到1%"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "   <div id=\"nM2FJ5\"></div>\n",
       "   <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
       "       (function() {\n",
       "           var plotSpec={\n",
       "\"data\":{\n",
       "},\n",
       "\"mapping\":{\n",
       "\"x\":\"version\",\n",
       "\"group\":\"continue\",\n",
       "\"fill\":\"continue\"\n",
       "},\n",
       "\"data_meta\":{\n",
       "},\n",
       "\"facet\":{\n",
       "\"name\":\"wrap\",\n",
       "\"facets\":\"retention\",\n",
       "\"ncol\":2,\n",
       "\"nrow\":1,\n",
       "\"order\":1,\n",
       "\"dir\":\"h\"\n",
       "},\n",
       "\"ggsize\":{\n",
       "\"width\":800,\n",
       "\"height\":400\n",
       "},\n",
       "\"kind\":\"plot\",\n",
       "\"scales\":[],\n",
       "\"layers\":[{\n",
       "\"geom\":\"bar\",\n",
       "\"mapping\":{\n",
       "},\n",
       "\"data_meta\":{\n",
       "},\n",
       "\"data\":{\n",
       "\"..count..\":[24665.0,25370.0,20024.0,20104.0,36198.0,37209.0,8265.0,8491.0],\n",
       "\"retention\":[\"retention_1\",\"retention_1\",\"retention_1\",\"retention_1\",\"retention_7\",\"retention_7\",\"retention_7\",\"retention_7\"],\n",
       "\"version\":[\"gate_30\",\"gate_40\",\"gate_30\",\"gate_40\",\"gate_30\",\"gate_40\",\"gate_40\",\"gate_30\"],\n",
       "\"continue\":[false,false,true,true,false,false,true,true]\n",
       "}\n",
       "}]\n",
       "};\n",
       "           var plotContainer = document.getElementById(\"nM2FJ5\");\n",
       "           window.letsPlotCall(function() {{\n",
       "               LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
       "           }});\n",
       "       })();    \n",
       "   </script>"
      ],
      "text/plain": [
       "<lets_plot.plot.core.PlotSpec at 0x193b10f86c8>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 宽转长\n",
    "data_for_bar = pd.melt(df2, id_vars=['userid', 'version'], \n",
    "                       value_vars=['retention_1', 'retention_7'], \n",
    "                       var_name='retention', value_name='continue')\n",
    "ggplot(data_for_bar, aes(x='version', group='continue', fill='continue')) \\\n",
    "+ geom_bar() \\\n",
    "+ facet_wrap(facets='retention', ncol=2, nrow=1) \\\n",
    "+ ggsize(800, 400)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "gate_30和gate_40是否继续玩游戏差别不大，随时间向前逐渐降低，安装游戏第1天后，大部分用户就不再继续玩了。第7天后，就只有约20%在继续玩了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 正态性检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x600 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(2, 2, figsize = (10, 6), dpi=100)\n",
    "axes[0,0].hist(df2.query(\"version == 'gate_30'\")['sum_gamerounds'], \n",
    "               bins=100, density=False)\n",
    "axes[0,0].set_title('gate 30')\n",
    "axes[1,0].hist(df2.query(\"version == 'gate_40'\")['sum_gamerounds'], \n",
    "               bins=100, density=False)\n",
    "axes[1,0].set_title('gate 40')\n",
    "qqplot(df2.query(\"version == 'gate_30'\")['sum_gamerounds'], \n",
    "       ax = axes[0,1], marker = \"x\", line = \"45\", fit = True)\n",
    "qqplot(df2.query(\"version == 'gate_40'\")['sum_gamerounds'], \n",
    "       ax = axes[1,1], marker = \"x\", line = \"45\", fit = True)\n",
    "axes[0,1].set_title(\"QQ Plot for gate 30\")\n",
    "axes[1,1].set_title(\"QQ Plot for gate 40\")\n",
    "plt.tight_layout()\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "QQ图表明字段'sum_gamerounds'不符合正态分布。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义1个函数，检验变量正态性\n",
    "def check_normality(series, alpha = 0.05):\n",
    "    print(f\"\\n零假设: 变量'{series.name}'属于正态分布\")\n",
    "    # 偏度小于0为负偏，大于0为正偏\n",
    "    # 峰度小于0瘦尾(平顶峰)，大于0为厚尾(尖顶峰)\n",
    "    print(f\"偏度(skewness)为: {series.skew().round(3)}; 峰度(kurtosis)为: {series.kurtosis().round(3)}\\n\")\n",
    "    if len(series) <= 5000:\n",
    "        print(\"Performing Shapiro–Wilk test\")\n",
    "        statistic, pvalue = stats.shapiro(series)\n",
    "        print(f\"Shapiro Test Statistic \\t {round(statistic, 5)}\")\n",
    "        print(f\"p-value \\t {pvalue}\")  \n",
    "    else:\n",
    "        print(\"Performing D'Agostino's K2 test\")\n",
    "        statistic, pvalue = stats.normaltest(series)\n",
    "        print(f\"Test Statistic \\t {round(statistic, 5)}\")\n",
    "        print(f\"p-value \\t {pvalue}\")\n",
    "    if pvalue <= alpha: \n",
    "        print(f\"\\n p值<{alpha}, 故拒绝原假设, 即变量不是正态分布\")\n",
    "        return 'not Normal'\n",
    "    else: \n",
    "        print(f\"\\n p值≥{alpha}, 故不能拒绝原假设, 即变量是正态分布\")\n",
    "        return \"Normal\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "零假设: 变量'sum_gamerounds'属于正态分布\n",
      "偏度(skewness)为: 4.808; 峰度(kurtosis)为: 34.856\n",
      "\n",
      "Performing D'Agostino's K2 test\n",
      "Test Statistic \t 88089.70493\n",
      "p-value \t 0.0\n",
      "\n",
      " p值<0.05, 故拒绝原假设, 即变量不是正态分布\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'not Normal'"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check_normality(df2['sum_gamerounds'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "cell_style": "center"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "零假设: 变量'sum_gamerounds'属于正态分布\n",
      "偏度(skewness)为: 4.783; 峰度(kurtosis)为: 34.81\n",
      "\n",
      "Performing D'Agostino's K2 test\n",
      "Test Statistic \t 43549.3578\n",
      "p-value \t 0.0\n",
      "\n",
      " p值<0.05, 故拒绝原假设, 即变量不是正态分布\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'not Normal'"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check_normality(df2.query(\"version == 'gate_30'\")['sum_gamerounds'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "cell_style": "center"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "零假设: 变量'sum_gamerounds'属于正态分布\n",
      "偏度(skewness)为: 4.833; 峰度(kurtosis)为: 34.904\n",
      "\n",
      "Performing D'Agostino's K2 test\n",
      "Test Statistic \t 44581.14687\n",
      "p-value \t 0.0\n",
      "\n",
      " p值<0.05, 故拒绝原假设, 即变量不是正态分布\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'not Normal'"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check_normality(df2.query(\"version == 'gate_40'\")['sum_gamerounds'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "无论是正态性检验还是QQ图都表明，字段'sum_gamerounds'不符合正态分布。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 曼-惠特尼U检验\n",
    "曼-惠特尼U检验(Mann Whitney U Test)目的是检验2个样本在统计分布上有无差异。**零假设**是2个样本分布无差异。  \n",
    "这里用来比较gate_30和gate_40两类用户第一周玩游戏次数是否存在统计学差异。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p值为0.04761370470020988\n",
      "p值≤0.05, 故拒绝原假设, 即2个样本分布存在差异\n"
     ]
    }
   ],
   "source": [
    "_, pvalue = stats.mannwhitneyu(df2.query(\"version == 'gate_30'\")['sum_gamerounds'], \n",
    "                               df2.query(\"version == 'gate_40'\")['sum_gamerounds'])\n",
    "print(f\"p值为{pvalue}\")\n",
    "if pvalue <= 0.05:\n",
    "    print(\"p值≤0.05, 故拒绝原假设, 即2个样本分布存在差异\")\n",
    "else:\n",
    "    print(\"p值>0.05, 故不能拒绝原假设, 即2个样本分布无差异\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "但是p值非常接近0.05，所以差异性不大。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 卡方$\\chi^2$检验\n",
    "卡方检验(Chi-Square Test)用于比较2个样本之间的关联性：  \n",
    "* 比较理论频数与实际频数的吻合程度或拟合优度，零假设是观测频数与期望频数没有差别。\n",
    "* 检验多个类别之间的独立性，零假设是数据集(离散变量)与分组变量没有关系。  \n",
    "* 这里用$\\chi^2$检验来检验变量'retention_1'和'retention_7'与分组变量'version'是否存在关联。  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p值为0.3594720674366307\n",
      "p值>0.05, 故不能拒绝原假设, 即观测频数与期望频数无差异\n"
     ]
    }
   ],
   "source": [
    "# 下面比较拟合优度。数据集随机编造\n",
    "expected = [50, 50, 50, 50, 50]\n",
    "observed = [50, 60, 40, 47, 53]\n",
    "# perform Chi-Square Goodness of Fit Test\n",
    "_, pvalue = stats.chisquare(f_obs=observed, f_exp=expected)\n",
    "\n",
    "print(f\"p值为{pvalue}\")\n",
    "if pvalue <= 0.05:\n",
    "    print(\"p值≤0.05, 故拒绝原假设, 即观测频数与期望频数存在差异\")\n",
    "else:\n",
    "    print(\"p值>0.05, 故不能拒绝原假设, 即观测频数与期望频数无差异\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>retention_1</th>\n",
       "      <th>False</th>\n",
       "      <th>True</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>version</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>gate_30</th>\n",
       "      <td>24665</td>\n",
       "      <td>20024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gate_40</th>\n",
       "      <td>25370</td>\n",
       "      <td>20104</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "retention_1  False   True\n",
       "version                  \n",
       "gate_30      24665  20024\n",
       "gate_40      25370  20104"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>retention_7</th>\n",
       "      <th>False</th>\n",
       "      <th>True</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>version</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>gate_30</th>\n",
       "      <td>36198</td>\n",
       "      <td>8491</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gate_40</th>\n",
       "      <td>37209</td>\n",
       "      <td>8265</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "retention_7  False  True\n",
       "version                 \n",
       "gate_30      36198  8491\n",
       "gate_40      37209  8265"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 列联表\n",
    "cross_table1 = pd.crosstab(df2['version'], df2['retention_1']) # 默认计数\n",
    "cross_table7 = pd.crosstab(df2['version'], df2['retention_7'])\n",
    "cross_table1\n",
    "cross_table7"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p值为0.0710446975544626\n",
      "p值>0.05, 故不能拒绝原假设, 即各组数据集不存在关联\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>retention_1</th>\n",
       "      <th>False</th>\n",
       "      <th>True</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>version</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>gate_30</th>\n",
       "      <td>24665</td>\n",
       "      <td>20024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gate_40</th>\n",
       "      <td>25370</td>\n",
       "      <td>20104</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "retention_1  False   True\n",
       "version                  \n",
       "gate_30      24665  20024\n",
       "gate_40      25370  20104"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>retention_1</th>\n",
       "      <th>False</th>\n",
       "      <th>True</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>version</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>gate_30</th>\n",
       "      <td>24799.68629</td>\n",
       "      <td>19889.31371</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gate_40</th>\n",
       "      <td>25235.31371</td>\n",
       "      <td>20238.68629</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "retention_1        False         True\n",
       "version                              \n",
       "gate_30      24799.68629  19889.31371\n",
       "gate_40      25235.31371  20238.68629"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# dof表示degree of free, expected是一个联表，shape与observed一致\n",
    "statistic, pvalue, dof, expected = stats.chi2_contingency(observed=cross_table1, correction = False)\n",
    "print(f\"p值为{pvalue}\")\n",
    "if pvalue <= 0.05:\n",
    "    print(\"p值≤0.05, 故拒绝原假设, 即各组数据集存在关联\")\n",
    "else:\n",
    "    print(\"p值>0.05, 故不能拒绝原假设, 即各组数据集不存在关联\")\n",
    "\n",
    "cross_table1\n",
    "pd.DataFrame(expected, index=cross_table1.index).set_axis(cross_table1.columns, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p值为0.0014520820581625864\n",
      "p值≤0.05, 故拒绝原假设, 即各组数据集存在关联\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>retention_7</th>\n",
       "      <th>False</th>\n",
       "      <th>True</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>version</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>gate_30</th>\n",
       "      <td>36198</td>\n",
       "      <td>8491</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gate_40</th>\n",
       "      <td>37209</td>\n",
       "      <td>8265</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "retention_7  False  True\n",
       "version                 \n",
       "gate_30      36198  8491\n",
       "gate_40      37209  8265"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>retention_7</th>\n",
       "      <th>False</th>\n",
       "      <th>True</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>version</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>gate_30</th>\n",
       "      <td>36383.94267</td>\n",
       "      <td>8305.05733</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gate_40</th>\n",
       "      <td>37023.05733</td>\n",
       "      <td>8450.94267</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "retention_7        False        True\n",
       "version                             \n",
       "gate_30      36383.94267  8305.05733\n",
       "gate_40      37023.05733  8450.94267"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# dof表示degree of free, expected是一个联表，shape与observed一致\n",
    "statistic, pvalue, dof, expected = stats.chi2_contingency(observed=cross_table7, correction = False)\n",
    "print(f\"p值为{pvalue}\")\n",
    "if pvalue <= 0.05:\n",
    "    print(\"p值≤0.05, 故拒绝原假设, 即各组数据集存在关联\")\n",
    "else:\n",
    "    print(\"p值>0.05, 故不能拒绝原假设, 即各组数据集不存在关联\")\n",
    "\n",
    "cross_table7\n",
    "pd.DataFrame(expected, index=cross_table7.index).set_axis(cross_table7.columns, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x400 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 热图\n",
    "fig, axes = plt.subplots(1, 2, figsize = (10, 4), dpi=100)\n",
    "sns.heatmap(cross_table1, ax=axes[0], annot=True, cmap=\"GnBu\")\n",
    "sns.heatmap(cross_table7, ax=axes[1], annot=True, cmap=\"Oranges\")\n",
    "plt.tight_layout()\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\\chi^2$检验结果表明'retention_1'与'version'分组不存在关联，而'retention_7'与'version'分组存在关联。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p style=\"color:blue; font-size:200%; font-weight:bold\">参考来源:</p>\n",
    "\n",
    "* [lets-plot.org](https://lets-plot.org/pages/api.html)\n",
    "* [AB测试原理及样本量计算的Python实现](https://www.cnblogs.com/cgmcoding/p/13802023.html)\n",
    "* [R语言入门之偏度（skewness）与峰度（kurtosis）](https://cloud.tencent.com/developer/article/1674971)\n",
    "* [SPSS进行两独立样本的非参数检验（Mann-Whitney U）](https://www.medsci.cn/article/show_article.do?id=7f5834360d9)\n",
    "* [卡方检验](https://wiki.mbalib.com/wiki/%E5%8D%A1%E6%96%B9%E6%A3%80%E9%AA%8C)\n",
    "* [The Chi-square test of independence](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3900058/)\n",
    "* [Chi-Square Test](https://www.mathsisfun.com/data/chi-square-test.html)\n",
    "* [How to Perform a Chi-Square Goodness of Fit Test in Python](https://www.statology.org/chi-square-goodness-of-fit-test-python/)\n",
    "* [Chi-square test in Python — All you need to know!!](https://www.askpython.com/python/examples/chi-square-test)\n",
    "* [How to run Chi-Square Test in Python](https://python-bloggers.com/2020/09/how-to-run-chi-square-test-in-python/)\n",
    "* [The Math Behind A/B Testing with Example Python Code](https://towardsdatascience.com/the-math-behind-a-b-testing-with-example-code-part-1-of-2-7be752e1d06f)\n",
    "* [How to perform an A/B test correctly in Python](https://www.mikulskibartosz.name/how-to-perform-an-ab-test-correctly-in-python/)\n",
    "* [AB_Tests_with_Python](https://www.kaggle.com/tammyrotem/ab-tests-with-python)\n",
    "* [A/B testing: Statistical Tests](https://www.kaggle.com/mustafacicek/a-b-testing-statistical-tests/notebook)\n",
    "* [A/B Testing for Data Science using Python – A Must-Read Guide for Data Scientists](https://www.analyticsvidhya.com/blog/2020/10/ab-testing-data-science/)\n",
    "* [Introduction to A/B testing](https://s3.amazonaws.com/assets.datacamp.com/production/course_6165/slides/chapter3.pdf)\n",
    "* [AB Testing in R](https://rpubs.com/odenipinedo/AB-testing-in-R)\n",
    "* [AB Testing With R Programming](https://www.geeksforgeeks.org/ab-testing-with-r-programming/)\n",
    "* [Learning Data Science: A/B Testing in Under One Minute](https://www.r-bloggers.com/2020/06/learning-data-science-a-b-testing-in-under-one-minute/)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py37_for_ml_and_visual",
   "language": "python",
   "name": "py37_for_ml_and_visual"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.12"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": true,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
